package ch10
{
	import flash.display.Sprite;
	import flash.events.Event;

	import utils.Ball;

	/**
	 * 单物体旋转.
	 * 如果物体要绕着某一点旋转，并且以物体本身的位置作为旋转的起点，那么下面给大家一个公式。
	 * 这个公式只需要给出物体距离中心点的相对 x,y 坐标和旋转的角度。它就会返回物体相对于中心点的新的坐标位置。
	 * 基本公式如下：
	 *  x1 = cos(angle) * x - sin(angle) * y;
	 *  y1 = cos(angle) * y + sin(angle) * x;
	 * @author sjp
	 *
	 */
	public class Rotate2 extends Sprite
	{
		private var ball:Ball;
		private var vr:Number=0.1;
		private var cos:Number=Math.cos(vr);
		private var sin:Number=Math.sin(vr);

		public function Rotate2()
		{
			init();
		}

		private function init():void
		{
			ball=new Ball();
			addChild(ball);
			ball.x=Math.random() * stage.stageWidth;
			ball.y=Math.random() * stage.stageHeight;
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		private function onEnterFrame(event:Event):void
		{
			var x1:Number=ball.x - stage.stageWidth / 2;
			var y1:Number=ball.y - stage.stageHeight / 2;
			var x2:Number=cos * x1 - sin * y1;
			var y2:Number=cos * y1 + sin * x1;
			ball.x=stage.stageWidth / 2 + x2;
			ball.y=stage.stageHeight / 2 + y2;
		}
	}
}